#ifndef YIGCABLE_H
#define YIGCABLE_H

// System includes
#include <QObject>

// Local includes
//#include "sc++/synth.h"
#include "Node.h"

/**
*   YigCable handles the routing of audio from/to synths on the server and deals with networking these connections
*/
class YigCable : public QObject
{
    Q_OBJECT

public:

    /**
    *   YigCable constructor
    *   @param Synth* The synth on the server that this cable controls
    *   @param QObject* The parent QObject for thread affinity
    */
    explicit YigCable(sc::Synth* synth, int inBus, int outBus, QObject *parent = 0);

    /**
    *   YigCable deconstructor, deletes the Synth* pointer
    */
    ~YigCable();

    /**
    *   getInBus() Returns the input bus for this cable routing synth
    *   @return int The input bus number
    */
    int getInBus();

    /**
    *   getOutBus() Returns the output bus for this cable routing synth
    *   @return int The output bus number
    */
    int getOutBus();

    /**
    *   free() Frees the cable synth on the SCSynth server
    */
    void free();

signals:

public slots:

private:

    /** The synth on the server that this cable controls */
    sc::Synth* mSynth;

    /** the input/output buses for this cable synth */
    int mInBus, mOutBus;

};

#endif // YIGCABLE_H
